## -*- mode: perl; -*-

my %targets = ();

%targets = (
    ## Base settings for cross-compile
    # Based on 10-main.conf: iphoneos-cross
    # Add generic compiler flags
    "all-base" => {
        template         => 1,
        cflags           => combine('-isysroot $(CROSS_TOP)/SDKs/$(CROSS_SDK) -fno-common')
    },

    ## Base settings
    "ios-cross-base" => {
        inherit_from    => [ "all-base" ],
        template         => 1,
        cflags           => add(sub { defined($ENV{'IOS_MIN_SDK_VERSION'}) ? '-mios-version-min=$(IOS_MIN_SDK_VERSION)' : '-mios-version-min=12.0'; }),
    },
    "macos-base" => {
        inherit_from    => [ "all-base" ],
        template         => 1,
        cflags           => add(sub { defined($ENV{'MACOS_MIN_SDK_VERSION'}) ? '-mmacosx-version-min=$(MACOS_MIN_SDK_VERSION)' : '-mmacosx-version-min=10.15'; }),
    },
    "mac-catalyst-base" => {
        inherit_from    => [ "all-base" ],
        template        => 1,
#        cflags          => add(sub { defined($ENV{'CATALYST_MIN_SDK_VERSION'}) ? '-mmacosx-version-min=$(CATALYST_MIN_SDK_VERSION)' : '-mmacosx-version-min=10.15'; }),
    },
    "watchos-cross-base" => {
        inherit_from    => [ "all-base" ],
        template         => 1,
        cflags           => add(sub { defined($ENV{'WATCH_MIN_SDK_VERSION'}) ? '-mwatchos-version-min=$(WATCH_MIN_SDK_VERSION)' : '-mwatchos-version-min=4.0'; }),
    },
    "tvos-cross-base" => {
        inherit_from    => [ "all-base" ],
        template         => 1,
        cflags           => add(sub { defined($ENV{'TVOS_MIN_SDK_VERSION'}) ? '-mtvos-version-min=$(TVOS_MIN_SDK_VERSION)' : '-mtvos-version-min=12.0'; }),
        defines          => [ "HAVE_FORK=0" ],
    },
    "xros-cross-base" => {
        inherit_from    => [ "all-base" ],
        template         => 1,
        # cflags           => add(sub { defined($ENV{'XROS_MIN_SDK_VERSION'}) ? '-mxros-version-min=$(XROS_MIN_SDK_VERSION)' : '-mxros-version-min=1.0'; }),
    },

    ## Apple iOS

    # Device
    "ios64-cross-arm64" => {
        inherit_from     => [ "darwin-common", "ios-cross-base" ],
        cflags           => add("-arch arm64"),
        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
        perlasm_scheme   => "ios64",
        sys_id           => "iOS",
    },
    "ios64-cross-arm64e" => {
        inherit_from     => [ "darwin-common", "ios-cross-base" ],
        cflags           => add("-arch arm64e"),
        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
        perlasm_scheme   => "ios64",
        sys_id           => "iOS",
    },
    # Simulator
    "ios-sim-cross-x86_64" => {
        inherit_from     => [ "darwin64-x86_64-cc", "ios-cross-base" ],
        sys_id           => "iOS",
    },
    "ios-sim-cross-arm64" => {
        inherit_from     => [ "darwin64-arm64-cc", "ios-cross-base" ],
        cflags           => add("-target arm64-apple-ios14.0-simulator -mios-version-min=14.0"),
        sys_id           => "iOS",
    },

    # Device
    "macos64-x86_64" => {
        inherit_from     => [ "darwin64-x86_64-cc", "macos-base" ],
        sys_id           => "MacOSX",
    },
    "macos64-arm64" => {
        inherit_from     => [ "darwin64-arm64-cc", "macos-base" ],
        sys_id           => "MacOSX",
    },
    # Catalyst
    "mac-catalyst-x86_64" => {
        inherit_from      => [ "darwin64-x86_64-cc", "mac-catalyst-base" ],
        cflags            => add("-target x86_64-apple-ios14.0-macabi -mios-version-min=14.0"),
        sys_id            => "MacOSX",
    },
    "mac-catalyst-arm64" => {
        inherit_from     => [ "darwin64-arm64-cc", "mac-catalyst-base" ],
        cflags           => add("-target arm64-apple-ios14.0-macabi -mios-version-min=14.0"),
        sys_id           => "MacOSX",
    },

    ## Apple WatchOS

    # Device
    "watchos-cross-armv7k" => {
        inherit_from     => [ "darwin-common",  "watchos-cross-base" ],
        cflags           => add("-arch armv7k"),
        defines          => [ "HAVE_FORK=0" ],
        sys_id           => "WatchOS",
    },
    "watchos-cross-arm64_32" => {
        inherit_from     => [ "darwin-common", "watchos-cross-base"],
        cflags           => add("-arch arm64_32"),
        defines          => [ "HAVE_FORK=0" ],
        sys_id           => "WatchOS",
    },
    "watchos-cross-arm64" => {
        inherit_from     => [ "darwin-common", "watchos-cross-base" ],
        cflags           => add("-arch arm64"),
        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
        perlasm_scheme   => "ios64",
        defines          => [ "HAVE_FORK=0" ],
        sys_id           => "WatchOS",
    },
    # Simulator
    "watchos-sim-cross-x86_64" => {
        inherit_from     => [ "darwin64-x86_64-cc", "watchos-cross-base"],
        cflags           => add(""),
        defines          => [ "HAVE_FORK=0" ],
        sys_id           => "WatchOS",
    },
    "watchos-sim-cross-arm64" => {
        inherit_from     => [ "darwin64-arm64-cc", "watchos-cross-base"],
        cflags           => add("-target arm64-apple-watchos7.2-simulator -mwatchos-version-min=7.2"),
        defines          => [ "HAVE_FORK=0" ],
        sys_id           => "WatchOS",
    },
    "watchos-sim-cross-i386" => {
        inherit_from     => [ "darwin-common", "watchos-cross-base"],
        cflags           => add("-arch i386"),
        defines          => [ "HAVE_FORK=0" ],
        sys_id           => "WatchOS",
    },

    ## Apple TV

    # Device
    "tvos-cross-arm64" => {
        inherit_from     => [ "darwin-common", "tvos-cross-base" ],
        cflags           => add("-arch arm64"),
        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
        perlasm_scheme   => "ios64",
        sys_id           => "tvOS",
    },
    # Simulator
    "tvos-sim-cross-arm64" => {
        inherit_from     => [ "darwin64-arm64", "tvos-cross-base" ],
        cflags           => add("-target arm64-apple-tvos12.0-simulator"),
        sys_id           => "tvOS",
    },
    "tvos-sim-cross-x86_64" => {
        inherit_from     => [ "darwin64-x86_64-cc", "tvos-cross-base" ],
        sys_id           => "tvOS",
    },

    ## Vision OS

    # Device
    "xros-cross-arm64" => {
        inherit_from     => [ "darwin64-arm64-cc", "xros-cross-base" ],
        cflags           => add("-arch arm64"),
        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
        sys_id           => "xros",
    },
    # Simulator
    "xros-sim-cross-arm64" => {
        inherit_from     => [ "darwin64-arm64-cc", "xros-cross-base" ],
        cflags           => add("-arch arm64"),
        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
        sys_id           => "xros",
    },
    "xros-sim-cross-x86_64" => {
        inherit_from     => [ "darwin64-x86_64-cc", "xros-cross-base" ],
        sys_id           => "xros",
    },

);
